Bally BASIC Sampler Tape
Written by Dick Ainsworth
Released by Bally in 1978
2000-Baud Conversion by Adam Trionfo (February 17, 2021)

These two BASIC programs were included with 300-BAUD Tape Interface for the Bally Arcade/Astrocade

This AstroBASIC 2000-baud version of the "BASIC Sampler" was converted on from the original 300-baud version using the "300 Baud to 2000 Baud Tape Conversion Program" by Jay Fenton from pages 104-107 of the "AstroBASIC" Manual.  This version is the same as the 300-baud version with one exception: line 20 was changed from:

20 :RETURN

to

20 .RETURN

This allows the program to run properly.  AstroBASIC doesn't allow :RETURN in its programs because this command is for use with the 300-baud interface, which AstroBASIC doesn't support.

This program works fine on real hardware and it also loads without issues from "tape" using the MAME emulator.  Since there are differences between how sounds are heard between Bally BASIC and "AstroBASIC," the sound effects and music don't sound the same when these programs are run under "AstroBASIC."

The following programs are on the two-sided tape.

Side 1:

1. Electric Doily (Video Art/Graphics) - Places a random square on the screen and reflects it eight times to create a symmetrical pattern.  A continuous pattern is generated with musical notes.

2. Line Graph - Draws a line graph to match the numbers you input.  Input the number of items you wish to graph.  For each item, input a number between one and 87.  The graph is drawn after the last item is entered.

3. Monthly Records [Not Usable] - A bar graph shows month-to-month levels of amounts which you input.  For each month, input a number between one and 87.  The graph is drawn after the last item is entered.  [Note that the original 300-baud tape has markers for 'Monthly Records' to save its records at/into.  As this is useless when piping tape audio from the computer, they were removed from the recordings to reduce size.  This makes 'Monthly Recordings' potentially unusable even if restored to a cassette tape.]

4. Electronic Music - Uses the musical tones in your Arcade to create electronic music.  Music plays and program returns to menu.  This program sounds different in "AstroBASIC" when compared to when it runs in Bally BASIC.

5. Number Match - Guessing games are a favorite among programmers because they are short and easy to understand.  See your programming course for details.  The computer lists the program and then picks a number from one to ten.  Input your guess.  If MORE or LESS appears, guess again.  After you get the right number, the computer picks another number for you to match.

Side 2:

1. Lunar Lander - Land on the moon with this computer simulation.  When the Lunar Lander appears, use the trigger on hand control one to fire rockets.  The numbers on the screen show fuel left, altitude, and speed.  Try to land at low speed or land in an open area to use as little fuel as possible.  [You can't crash in this game.]

2. Gravity Game - As your skill improves with practice, this game gets more difficult.  Use the trigger on hand control number one to keep the dot on the screen.  If you let the dot fall, your skill level goes down.  If you carry the dot across the screen to the right edge, Skill Level is added to Score and the dots gets heavier.  Score is displayed at the end.

3. Newtonia '500' - Fly a ship where there is no gravity or friction and see how Sir Isaac Newton's laws operate.  Move joystick number one left, right, up and down to fire control rockets.  Pull the trigger if you want to leave a trail.

Below is the 300-baud listing of the program on Side B (you'll notice that line 20 hasn't been changed here).  I tried changing line 28 to NT=-1.  I thought that might make the sound effects sound the same under AstroBASIC as they do under Bally BASIC, but it doesn't work as I expected.  Maybe NT=-1 only gets rid of AstroBASIC's ability to access the new music variables?  I can't remember the details...

Dick Ainsworth wrote all of the programs on the Sampler.  In 2002, he said this about the Bally BASIC Sampler:

"I think that the tape cassette that I wrote for the Bally BASIC cartridge was the first -- or certainly one of the first -- examples of personal computer software for the mass market. The cassette with Bill's Microsoft BASIC was released at the same time. In fact, I first met Bill at the GRT recording studio where we were recording masters for the Bally BASIC cassette and Microsoft BASIC cassette, so the release dates would be nearly identical. I don't know of anyone who had sold personal software to a mass market before this. If you have other examples, please let me know."

You can read his full comments, here:

https://ballyalley.com/ballyalley/interviews/dick_ainsworth.txt

Here is the manual for the BASIC Sampler; it is the tape inlay:

https://ballyalley.com/tape_manuals/misc/Bally%20BASIC%20Tape%20(Software%20No%201).pdf

The "Lunar Lander" game is simple, but it's one of the earliest releases of a BASIC program on tape-- EVER!  Who else can say that with any confidence?!?

Here is a link to Jim Gerrie's port of the Bally BASIC "Lunar Lander" game to the TRS-80 MC-10.  This port to the TRS-80 is what inspired me to pull out this game and give it a try:

https://www.youtube.com/watch?v=-n95GpEFcjs

Jim seems to have modified the game so that you can crash (as you can't crash in the Bally version).

Here's the Bally BASIC program that includes "Lunar Lander" from Side B of the Sampler tape.  You'll notice that the multiplication and divide signs are shown in this program.  If they don't look right to you, then the program isn't showing up correctly in your text viewer.

   2 .
   3 .
   4 .
  10 .APC#7001(B)
  20 :RETURN
  25 FC=7;BC=8
  27 CLEAR
  28 NT=0
  30 PRINT ;PRINT ;PRINT
  40 PRINT "     ? BALLY BASIC ?"
  45 PRINT "   PROGRAM SAMPLER (B)"
  50 PRINT ;PRINT
  60 PRINT   "  1 LUNAR LANDER"
  70 PRINT "  2 GRAVITY GAME"
  75 PRINT "  3 NEWTONA '500'"
  80 PRINT
  90 PRINT
 100 PRINT "    (C) 1978 BALLY MFG.",
 105 FOR A=1TO 2400
 110 IF &(22)=16GOTO 10
 120 IF &(23)=8GOTO 900
 130 IF &(22)=8GOTO 7000
 140 IF &(21)=8GOTO 9000
 150 NEXT A
 160 FC=9;GOTO 105
 900 T=0
 910 &(23)=255
 920 CLEAR
 930 BC=0;FC=126
 940 NT=0
1000 FOR A=-80TO 80
1010 T=T+RND (4)-3
1020 IF T<0 T=0
1030 LINE A,-44,0
1040 LINE A,T-44,1
1050 NEXT A
1060 FOR A=1TO 51
1070 BOX RND (160)-80,RND (88)-44,1,1,1
1080 NEXT A
2000 .GO
2030 G=0
2035 F=30
2040 X=-78
2050 Y=43
2060 BOX X,Y,3,3,3
2061 IF U BOX X,Y-2,1,3,3
2500 .MORE
2505 BOX X,Y,3,3,3
2506 IF U BOX X,Y-2,1,3,3
2508 IF F>0 U=TR(1)
2509 IF F<1 U=0
2510 IF U&(21)=255
2512 IF U=0&(21)=0
2518 G=G+8-20U
2520 Y=Y-G25
2525 IF Y<-42 GOTO 3000
2530 X=X+1
2532 IF F<1 U=0
2533 IF U=1 F=F-1
2535 BOX X,Y,3,3,3
2536 IF U BOX X,Y-2,1,3,3
2560 CX=-20
2570 CY=44
2575 PRINT #3,F,#4,Y+42,#4,-G10
2590 GOTO 2500
3000 .LAND
3005 Y=-42
3010 CY=44
3011 CX=-20
3012 PRINT #3,F,#4,Y+42,#4,-G10
3020 &(21)=0
3030 BOX X,Y,3,3,3
3031 IF U BOX X,Y-2,1,3,3
4000 .END
4010 IF &(22)=16GOTO 10
4020 IF &(23)=8 GOTO 2000
4030 GOTO 4010
7000 .GG
7005 A=11
7006 S=0
7007 T=8
7010 CLEAR
7020 FC=7;BC=128
7070 T=T-1
7080 IF T<1 GOTO 7400
7090 IF A<1 A=1
7095 CY=37
7100 PRINT "     SKILL:",#1,12-A,
7101 PRINT "    SCORE:",#1,S
7110 X=-80
7120 Y=44
7130 G=0
7180 BOX 0,0,160,88,3
7190 BOX 0,0,158,86,3
7200 X=X+2
7210 G=G+10-20TR(1)
7220 Y=Y-GA
7230 BOX X,Y,1,1,1
7240 IF X=84 S=S+12-A
7250 IF X=84 A=A-2;GOTO 7010
7260 IF Y>150 A=A+1;GOTO 7010
7265 IF Y<-44 IF &(22)=16 GOTO 10
7270 IF Y<-44 A=A+1;GOTO 7010
7280 GOTO 7200
7400 CLEAR ;CY=37
7410 PRINT "  ? FINAL SCORE:",#2,S
7420 PRINT
7450 IF &(22)=16 GOTO 10
7460 IF &(23)=8 GOTO 7006
7480 GOTO 7450
9000 .N5
9010 CLEAR
9015 &(23)=255
9020 BC=128;FC=7
9030 X=0;Y=0;M=0;N=0
9100 BOX X,Y,3,3,2
9110 X=X+M;Y=Y+N
9120 IF X>77 X=77
9130 IF X<-78 X=-78
9140 IF Y>41 Y=41
9150 IF Y<-42 Y=-42
9152 F=TR(1)
9155 IF F GOTO 9170
9160 BOX X,Y,3,3,1
9170 BOX X-D,Y-E,1,1,3
9180 D=JX(1);E=JY(1)
9190 M=M+D;N=N+E
9200 IF D#0 &(21)=255
9210 IF E#0 &(21)=255
9220 IF D=0 IF E=0 &(21)=0
9230 IF F GOTO 9110
9235 IF &(22)=16 GOTO 10
9237 IF &(23)=8 GOTO 9000
9240 GOTO 9100
9250 .AINSWORTH/ETC.


END OF DOCUMENT

